package com.baizhi.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class PictureManager {
	public static void uploadImage(String imageType, String uploadServicePath, String fileName, String createTime,
			String picFile) {

		boolean flag = false;// 标记此方法能否正常执行完毕
		System.out.println("jrkjManage------>>>>>> uploadFile");
		String serverPath = "d:/fileUpload/";
		// System.out.println(folderName);
		// UploadFile files = getFile(getPara("file"), folderName);

		File imagefile = new File(serverPath + picFile + fileName);
		System.out.println("开始上传文件到nginx");

		FTPClient ftpClient = new FTPClient();
		ftpClient.setControlEncoding("GBK");
		String hostname = "123.56.120.25"; // FTP服务器主机ip
		int port = 21;// FTP服务器端口，默认就是21
		String username = "apple"; // FTP服务器用户名（可以有多个）
		String password = "apple123";// FTP服务器密码
		System.out.println("初始化参数");
		try {
			// 链接ftp服务器
			ftpClient.connect(hostname, port);
			System.out.println("FPT服务器连接成功");
			// 登录ftp
			ftpClient.login(username, password);
			System.out.println("nginx服务器登录成功！");
			int reply = ftpClient.getReplyCode(); // ftp服务状态码
			System.out.println("nginx服务器状态(230为成功)：" + reply);
			// 如果reply返回230就算成功了，如果返回530密码用户名错误或当前用户无权限。
			System.out.println("!FTPReply.isPositiveCompletion(reply)：" + !FTPReply.isPositiveCompletion(reply));
			if (!FTPReply.isPositiveCompletion(reply)) {
				ftpClient.disconnect();
				System.out.println("nginx服务器状态错误！");
				return;
			}
			System.out.println("初始化nginx路径");
			ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
			System.out.println("uploadServicePath：" + uploadServicePath);
			// 在nginx上创建文件夹，一次只能创建一级，所以建多级要分多次
			ftpClient.makeDirectory("abc");// 什么的都不写的情况下，默认在root目录下创建文件夹，此处在nginx/apple/uploadImage
			ftpClient.makeDirectory("abc/" + imageType);// 在root目录下创建文件夹
			ftpClient.makeDirectory("abc/" + imageType + "/" + createTime);// 在root目录下创建文件夹
			System.out.println("目录创建成功！");

			InputStream input = new FileInputStream(imagefile);
			System.out.println("创建输入流成功！");
			ftpClient.storeFile(uploadServicePath, input);// 文件你若是不指定就会上传到root目录下
			System.out.println("文件上传成功！");
			input.close();
			System.out.println("关闭文件输入流！");
			ftpClient.logout();
			System.out.println("退出nginx服务器！");
		} catch (SocketException e) {
			System.out.println("SocketException(socket协议出错：)：" + e.getMessage());
		} catch (IOException e) {
			System.out.println("IOException:(IO异常)：" + e.getMessage());
		} finally {
			System.out.println("关闭nginx连接----》》开始");
			if (ftpClient.isConnected()) {
				try {
					ftpClient.disconnect();
					System.out.println("关闭FTP服务器");
				} catch (IOException ioe) {
					System.out.println("FTP服务器关闭异常");
				}
			}
			System.out.println("关闭nginx连接----》》结束");
		}
		flag = true;// 标记上传过程中没有问题
	}
}
